import * as XLSX from 'xlsx'
export function aoaToExcel(aoa,mergeCells, fileName) {
    const wopts = {
      bookType: 'xlsx',
      bookSST: false,
      type: 'binary'
    }
    const workBook = {
      SheetNames: ['Sheet1'],
      Sheets: {},
      Props: {}
    }
    workBook.Sheets['Sheet1'] = XLSX.utils.aoa_to_sheet(aoa)
    workBook.Sheets['Sheet1']['!merges'] = mergeCells
    openDownloadXLSXDialog(new Blob([changeData(XLSX.write(workBook, wopts))]),fileName + '.xlsx')
    // FileSaver.saveAs(new Blob([changeData(XLSX.write(workBook, wopts))],
    //   { type: 'application/octet-stream' }), )
  }

  export const openDownloadXLSXDialog = (url, saveName) => {
    if (typeof url == 'object' && url instanceof Blob) {
      url = URL.createObjectURL(url) // 创建blob地址
    }
    var aLink = document.createElement('a')
    aLink.href = url
    aLink.download = saveName || '' // HTML5新增的属性，指定保存文件名，可以不要后缀，注意，file:///模式下不会生效
    var event
    if (window.MouseEvent) {
      event = new MouseEvent('click')
    } else {
      event = document.createEvent('MouseEvents')
      event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false,
        false, false, false, 0, null)
    }
    aLink.dispatchEvent(event)
  }

function changeData(s) {
    if (typeof ArrayBuffer !== 'undefined') {
      let buf = new ArrayBuffer(s.length)
      let view = new Uint8Array(buf)
      for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xff
      return buf
    } else {
      let buf = new Array(s.length)
      for (let i = 0; i !== s.length; ++i) buf[i] = s.charCodeAt(i) & 0xff
      return buf
    }
  }